//
// Created by longyunbo on 6/23/21.
//

#include "DataTranslate.h"

string DataTranslate :: replaceAWithX(string str) {
    int pos;
    pos = str.find("a");
    while(pos != -1){
        // str.length()求字符的长度，注意str必须是string类型 将1a
            str.replace(pos,string("/").length(),".");
            pos = str.find("a");
    }
    return str;
}

int DataTranslate::smallToBigEndU4( int value ){

    return ( value >> 24 & 0x000000ff ) | ( value >> 8 & 0x0000ff00 )  | ( value << 24 & 0xff000000 ) | ( value << 8 &0x00ff0000 ) ;
}

short DataTranslate::smallToBigEndU2( short value ){
    return value << 8 | value >> 8 ;
};

long DataTranslate::smallToLong( long b ){
    return (b << 56 & 0xff00000000000000) | (b << 40 & 0x00ff000000000000) |
           (b << 24 & 0x0000ff0000000000) | (b << 8 & 0x000000ff00000000) | (b >> 56 & 0x00000000000000ff) | (b >> 40 & 0x000000000000ff00) | (b >> 24 & 0x0000000000ff0000) | (b >> 8 & 0x00000000ff000000);
}

float DataTranslate::floatb2l(float value){
    float_conv d1, d2;
    d1.f = value;
    d2.c[0] = d1.c[3];
    d2.c[1] = d1.c[2];
    d2.c[2] = d1.c[1];
    d2.c[3] = d1.c[0];
    return d2.f;
};

double DataTranslate::doubleb2l(double value){
    double_conv d1, d2;
    d1.d = value;
    d2.c[0] = d1.c[7];
    d2.c[1] = d1.c[6];
    d2.c[2] = d1.c[5];
    d2.c[3] = d1.c[4];
    d2.c[4] = d1.c[3];
    d2.c[5] = d1.c[2];
    d2.c[6] = d1.c[1];
    d2.c[7] = d1.c[0];
    return d2.d;
}


//flota转long 让我看看你的浮点数 听话 让我看看 看看你发育正不正常
long DataTranslate::floatToLong( float value ){
    fl d1;
    d1.f = value;
    return d1.l;
};

//long转float 不要啦！ 杰哥
float DataTranslate::longToFloat( long value ){
    fl d1;
    d1.l = value;
    return d1.f;
};

//double系列 这个double 就是逊啦!
//double转Long (食指指向double)逊！
long DataTranslate::doubleToLong( double value ){
    dl d1;
    d1.d = value;
    return d1.l;
};

//long转double (大拇指指向自己)勇!
double DataTranslate::longToDouble( long value ){
    dl d1;
    d1.l = value;
    return d1.d;
};
char* DataTranslate::floatToChar(float va){
    FloatToChar FT;
    FT.f = va;
    return FT.c;
};
char* DataTranslate::longToChar(long va){
    LongToChar LT;
    LT.l = va;
    return LT.c;
};
long* DataTranslate::charToLong(char* va){
    LongToChar LT;
    LT.c = va;
    return (long*)LT.l;
};

float DataTranslate::charToFloat(char* va){
    FloatToChar FTC;
    FTC.c = va;
    return FTC.f;
};





